<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
    <style>
        div {
            width: 50px;
            height: 50px;
            background: red;
            position: absolute;
            left: 600px;
        }
    </style>
</head>
<body>

    <div></div>

    <script>

        // 缓冲运动
        //    速度是由距离来决定的

        //   缓冲因子  把剩余的路程等分10份



        var oDiv = document.querySelector('div') ;
        move(oDiv , 'left' , 0)
        // var t = setInterval(function(){
        //     // 
        //     var start = oDiv.offsetLeft ;
        //     var speed = (end - start) / 10 ;
        //     speed = speed > 1 ? speed : 1 ;
        //     start += speed ;
        //     oDiv.style.left = start + 'px' ;
        //     if(start >= end) {
        //         clearInterval(t) ;
        //     }
        // } , 20)


        function move(ele , prop , end , cb) {
            var t = setInterval(function(){
                var start = oDiv.offsetLeft ;
                // 把当前距离到终点距离等分10分，每次走1/10  10叫做缓冲因子
                var speed = (end - start) / 10 ;
                // 正向运动的时候，向上取整，速度一定至少是1
                // 反向运动的时候，向下取整，速度一定至少是-1
                speed = speed > 0 ? Math.ceil(speed) : Math.floor(speed) ;
                start += speed ;
                oDiv.style.left = start + 'px' ;
                if(Math.abs(end - start) <= Math.abs(speed)) {
                    clearInterval(t) ;
                }
            } , 20)
        }



    </script>
    
</body>
</html>